"""
1、shape基类，要求所有子类都必须提供面积的计算，子类有三角形（triangle），矩形（rectange）和圆形（circular）。
2、上题中，针对圆形的数据可序列化。
"""

import math

class Shape:
    def __init__(self, x=1, y=1, z=1, r=1):
        "x:长; y宽; z:高; r:半径;"
        self.length = x
        self.width = y
        self.height = z
        self.radius = r

    def area(self):
        pass

# 三角形
class Triangle(Shape):

    def area(self):
        return self.length * self.width / 2

# 长方形
class Rectangle(Shape):

    def area(self):
        return self.length * self.width

# 圆形
class Circular(Shape):

    def area(self):
        return math.pi * pow(self.radius, 2)


area01 = Circular(r=5)

print(area01.__dict__)
print(area01.area())

